using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Kaskelot.SP.Core;
using Microsoft.SharePoint;
using Kaskelot.SP.Services.Setup;

namespace Kaskelot.SP.Resources.Features.RootSiteProvisioning
{
	/// <summary>
	/// This class handles events raised during feature activation, deactivation, installation, uninstallation, and upgrade.
	/// </summary>
	/// <remarks>
	/// The GUID attached to this class may be used during packaging and should not be modified.
	/// </remarks>

	[Guid("806c232c-de43-4581-af88-f14b8a1775f5")]
	public class RootSiteProvisioningEventReceiver : SPFeatureReceiver
	{
		// Uncomment the method below to handle the event raised after a feature has been activated.

		public override void FeatureActivated(SPFeatureReceiverProperties properties)
		{
			SPSite site = properties.Feature.Parent as SPSite;

			#region Features
			if (site.IsFeatureActivated(Constants.Features.ContentTypes))
			{
				site.Features.Remove(Constants.Features.ContentTypes);
			}
			site.Features.Add(Constants.Features.ContentTypes);

            if (site.IsFeatureActivated(Constants.Features.MasterPages))
            {
                site.Features.Remove(Constants.Features.MasterPages);                
            }
            site.Features.Add(Constants.Features.MasterPages);

			if (site.IsFeatureActivated(Constants.Features.PageLayouts))
			{
                site.Features.Remove(Constants.Features.PageLayouts);
			}
            site.Features.Add(Constants.Features.PageLayouts);
			#endregion
		}


		// Uncomment the method below to handle the event raised before a feature is deactivated.

		//public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
		//{
		//}


		// Uncomment the method below to handle the event raised after a feature has been installed.

		//public override void FeatureInstalled(SPFeatureReceiverProperties properties)
		//{
		//}


		// Uncomment the method below to handle the event raised before a feature is uninstalled.

		//public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
		//{
		//}

		// Uncomment the method below to handle the event raised when a feature is upgrading.

		//public override void FeatureUpgrading(SPFeatureReceiverProperties properties, string upgradeActionName, System.Collections.Generic.IDictionary<string, string> parameters)
		//{
		//}
	}
}
